package main

import "fmt"

func main(){

	a:=10

	fmt.Println("变量a的地址=",&a)

	//创建一个指针变量
	var p1 *int=&a
	fmt.Println("p1的值=",p1)

	var f float32=23.2
	var p2 *float32=&f
	fmt.Println("f的地址=-",&f)
	fmt.Println("p2的地址=",p2)

	//通过指针获取值
	fmt.Println("p2指针对应的值为:=",*p2)


	//数组指针

	//创建一个数组
	arr1 :=[4]int{1,2,3,4}
	fmt.Println("arr1数组的地址：=",&arr1)
	//声明一个 数组指针
	var arrp1 *[4]int
	arrp1=&arr1
	fmt.Println(arrp1)

	fmt.Println("arr1数组的地址：=",&arr1)
	fmt.Println("arrp1的地址=",&arrp1)


	// 指针数组

	//int 型的数组
	a1:=1
	b:=2
	c:=3
	d:=4
	arr2 :=[4]int{a1,b,c,d}
	//指针数组 里面存储的是地址
	arr3 :=[4]*int{&a1,&c,&c,&d}
	fmt.Println("arr2=",arr2)   // arr2= [1 2 3 4]
	fmt.Println("arr3=",arr3)   //arr3= [0xc00000a130 0xc00000a138 0xc00000a138 0xc00000a140]

    // arr3[0] 为第一个地址  *arr3[0] 获取到值 并重新赋值
	*arr3[0]=200  //  修改 变量 a1的值

	// 打印  a1  b  c  d的 值

	fmt.Printf("// 打印  a1  b  c  d的 值")
	for i:=0;i<len(arr3);i++{
		fmt.Println(*arr3[i])
	}



}
